package tp3;

import tp3.Esquina;
public class Cuadra {
	
	private Esquina puntoInicial;
	private Esquina puntoFinal;
	private Obstaculo unObstaculo;
	private Sorpresa unaSorpresa;
	
	
	
	public Cuadra (){
		puntoInicial = null;
		puntoFinal = null;
		unObstaculo= null;
		unaSorpresa= null;
		
	}
	public Cuadra (Esquina unaEsquina, Esquina otraEsquina){
		puntoInicial = unaEsquina;
		puntoFinal = otraEsquina;
	}
	
	public Obstaculo getObstaculo() {
		return unObstaculo;
	}
	public void setObstaculo(Obstaculo unObstaculo) {
		this.unObstaculo = unObstaculo;
	}
	public Sorpresa getSorpresa() {
		return unaSorpresa;
	}
	public void setSorpresa(Sorpresa unaSorpresa) {
		this.unaSorpresa = unaSorpresa;
	}
	
	public void recorrer(Vehiculo vehiculo) {
		boolean pudoPasar = true; 
		
		if (this.sePuedeRecorrer()){
			if (this.unaSorpresa != null){
				vehiculo.aplicar(this.unaSorpresa);
			}
			if (this.unObstaculo != null){
				pudoPasar = vehiculo.aplicar(this.unObstaculo);
					
			}	
			if (pudoPasar){
				vehiculo.setPosicion(this.esquinaOpuesta(vehiculo.getPosicion()));
				vehiculo.sumarMovimientos(1);
			}
		}
	}
	public Esquina esquinaOpuesta(Esquina esquina) {
		
		Esquina esquinaADevolver;
		
		if (esquina == puntoInicial){
			esquinaADevolver= puntoFinal;
		}else{
			esquinaADevolver= puntoInicial;
		}
		
		if(esquinaADevolver== null){
			
			return esquina;
		}else {
			
			return esquinaADevolver;
		}
		
	}
	public void setEsquinas(Esquina esquinaA, Esquina esquinaB){
		this.puntoInicial = esquinaA;
		this.puntoFinal = esquinaB;
	}
	public Esquina getEsquinaInicial(){
		return puntoInicial;
	}
	public Esquina getEsquinaFinal(){
		
		return puntoFinal;
	}
	
	private boolean sePuedeRecorrer(){
		return (puntoInicial != null & puntoFinal != null);
		
	}
}
